home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FishMarket 1.0
/
FishMarket v1.0.iso
/
fishies
/
551-575
/
disk_556
/
scheme2c
/
scheme-src.lzh
/
scrt
/
signal.h
< prev
next >
Wrap
C/C++ Source or Header
|
1991-10-11
|
3KB
|
87 lines
/* SCHEME->C */
/* Copyright 1989 Digital Equipment Corporation
* All Rights Reserved
*
* Permission to use, copy, and modify this software and its documentation is
* hereby granted only under the following terms and conditions. Both the
* above copyright notice and this permission notice must appear in all copies
* of the software, derivative works or modified versions, and any portions
* thereof, and both notices must appear in supporting documentation.
*
* Users of this software agree to the terms and conditions set forth herein,
* and hereby grant back to Digital a non-exclusive, unrestricted, royalty-free
* right and license under any changes, enhancements or extensions made to the
* core functions of the software, including but not limited to those affording
* compatibility with other hardware or software environments, but excluding
* applications which incorporate this software. Users further agree to use
* their best efforts to return to Digital any such changes, enhancements or
* extensions that they make and inform Digital of noteworthy uses of this
* software. Correspondence should be provided to Digital at:
*
* Director of Licensing
* Western Research Laboratory
* Digital Equipment Corporation
* 100 Hamilton Avenue
* Palo Alto, California 94301
*
* This software may be distributed (but not offered for sale or transferred
* for compensation) to third parties, provided such third parties agree to
* abide by the terms and conditions of this notice.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
* WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT
* CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
* ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
* SOFTWARE.
*/
/* During critical sections in the Scheme system, signals may not be acted
upon. As one such critical section is in CONS, a cheap signal masking
mechanism is required which is implemented as follows.
A critical section is entered by invoking MUTEXON:
*/
#define MUTEXON sc_mutex = 1
extern int sc_mutex; /* Mutual exclusion flag */
/* The code in the critical section is then executed the section is exited by
invoking MUTEXOFF:
*/
#define MUTEXOFF if (sc_mutex = sc_pendingsignals) \
sc_sendpendingsignals()
extern int sc_pendingsignals;
extern sc_sendpendingsignals();
/* Signals that are caught by a Scheme->C program enter through the following
procedure. If the Scheme system is not in a critical section, then the
user's signal handler will be directly called. Otherwise, the signal
will be defered until the critical section is exited.
*/
extern void sc_onsignal1();
/* During garbage collection, signals are blocked by calling:
sc_gcinprogress( 1 )
at the start of collection, and enabled by calling
sc_gcinprogress( 0 )
at the end of collection.
*/
extern sc_gcinprogress();
/* Arithmetic traps are enabled by the following function. */
extern sc_mathtraps();